昨天我們談過firestore是firebase提供的其中一項服務。
firestore 有很多優點,
在結構方面,firebase 本身是NoSQL資料庫,資料的建立上是利用collection及document像條鎖鏈串在一起:
因此當你需要尋找所要的資料,便需要依循其規律層層尋找。
在其code便可知其一二。
const alovelaceDocumentRef = db.collection('users').doc('alovelace');
因此,在未來幾周都會蠻容易看到這種取資料的方法。
而在取collection中所有doc或是在doc取得所有field value都有各自的方法。
EX取collection中所有doc:
const ref = db.collection('collection);
const snapshot = await ref.get();
snapshot.forEach(doc => {
console.log(doc.id, '=>', doc.data());
});
其中doc.id為你在firestore建立的doc名稱,doc.data()則是取得doc中所有欄位資料
EXdoc取得所有field value
const ref = db.collection('collection').doc('doc');
const doc = await ref.get();
console.log('Document data:', doc.data());
doc.data()同上取得doc中所有欄位資料,若要取得特定欄位
EX 取的collectio=>doc=>column1:"HI"
const ref = db.collection('collection').doc('doc');
const doc = await ref.get();
console.log('Document data:', doc.data().column1);
同時firebase也能進行排序與限制數量
EX
const lastThreeRes = await ref.collection('collection').orderBy('column1', 'desc').limit(3).get();
.orderBy(欄位,asc desc)進行排序
.limit(X)限制只能得到前X筆資料
另外firestore也能進行簡單的query,但只能使用
<
<=
==
>
>=
array-contains
in
array-contains-any
EX
const query1 = await ref.where('column1', '==', 'HI').get();
const query1 = await ref.where('column1', '>=', 'HI').get();
const query1 = await ref.where('column1', '<', 'HI').get();